#include "led.h"
// #include "key.h"
// #include "systick.h"
void led_init(void)
{
	// 时钟使能
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE | RCC_AHB1Periph_GPIOF, ENABLE);
	//初始化
	GPIO_InitTypeDef p;
	p.GPIO_Mode = GPIO_Mode_OUT;
	p.GPIO_OType = GPIO_OType_PP;
	p.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
	p.GPIO_PuPd = GPIO_PuPd_NOPULL;
	p.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOF, &p);
	p.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14;
	GPIO_Init(GPIOE, &p);

	// 置位,让灯不亮
	GPIO_SetBits(GPIOF, GPIO_Pin_9 | GPIO_Pin_10);
	GPIO_SetBits(GPIOE, GPIO_Pin_13 | GPIO_Pin_14);

	// 复位，让灯亮
	// GPIO_ResetBits(GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin)
}

void led_one_on(LED_ID led_n)
{
	switch (led_n)
	{
	case LED_D1:
		GPIO_ResetBits(GPIOF, GPIO_Pin_9);
		GPIO_SetBits(GPIOF, GPIO_Pin_10);
		GPIO_SetBits(GPIOE, GPIO_Pin_13 | GPIO_Pin_14);
		break;
	case LED_D2:
		GPIO_ResetBits(GPIOF, GPIO_Pin_10);
		GPIO_SetBits(GPIOF, GPIO_Pin_9);
		GPIO_SetBits(GPIOE, GPIO_Pin_13 | GPIO_Pin_14);
		break;
	case LED_D3:
		GPIO_ResetBits(GPIOE, GPIO_Pin_13);
		GPIO_SetBits(GPIOF, GPIO_Pin_9 | GPIO_Pin_10);
		break;
	case LED_D4:
		GPIO_ResetBits(GPIOE, GPIO_Pin_14);
		GPIO_SetBits(GPIOF, GPIO_Pin_9 | GPIO_Pin_10);
		break;
	default:
		GPIO_SetBits(GPIOF, GPIO_Pin_9 | GPIO_Pin_10);
		GPIO_SetBits(GPIOE, GPIO_Pin_13 | GPIO_Pin_14);
		break;
	}
}

void led_ctrl_gpio(int led_type)
{
	switch (led_type)
	{
	case 1:
		led_one_on(LED_D1);
		break;
	case 2:
		led_one_on(LED_D2);

		break;
	case 3:
		led_one_on(LED_D3);

		break;
	case 4:
		led_one_on(LED_D4);

		break;
	case 5:
		led_one_on(LED_DEF);
		break;
	}
}

void delay(int v)
{
	//	if(key_check(4)){
	//		return;
	//	}

	while (v--)
		;
}

// ucos修改，函数要求：无返回，带指针
void led_loop(void *p_arg)
{
	OS_ERR err;
	led_init();
	int delayTime = 0x144444;
	uint32_t mstime = 2000;
	while (1)
	{
		//	跳出这个while
		// if (key_check(4))
		// {
		// 	break;
		// }
		// Delay_ms(mstime);
		for (int led_count = 1; led_count <= 5; ++led_count)
		{
			led_ctrl_gpio(led_count);
			OSTimeDlyHMSM(0, 0, 2, 0, OS_OPT_TIME_DLY | OS_OPT_TIME_HMSM_STRICT, &err);
			// delay(delayTime);

			// Delay_ms(mstime); // 等待2000ms
		}
		delay(delayTime);
	}
}
